<?php
namespace app\index\service;
use think\facade\Log;
use think\facade\Cache;
use app\index\model\Applets;
use app\index\model\TempUsers;

class TokenService{

	//创建token
	public static function createToken($id){
		$str=[
			//用户id
			md5(md5($id.config('config.custom_secret_key'))),//加密的用户id
			getRandStr(32),//随机字符串
			time()//时间戳
		];
		$token = implode('_',$str);
		$token=base64_encode($token);
		return $token;
		// return encryptDecrypt($token);
	}

	//获取token
	public static function getToken($token){

		cache($token, NULL);
		$token=base64_decode($token);
		$decryptToken=explode('_',$token);
		if(count($decryptToken)==2){
			$res=Applets::getId($decryptToken[0]);
		}else if(count($decryptToken)==3){
			$res=TempUsers::getId($decryptToken[0].'_'.$decryptToken[1]);
		}
		if(!$res){
			return false;
		}

		//创建token
		$newToken=self::createToken($res);
		// 用户信息存到缓存中
		// 设置缓存, 7200 ,120分钟后过期
		// 设置缓存, 3600 ,60分钟后过期
		// 设置缓存, 300 ,5分钟后过期
		// cache($newToken,json_encode($res),3600);
		self::saveToken($newToken,$res);
		return $newToken;
	}

	//保存token
	public static function saveToken($token,$data=''){
		$result = Cache::store('redis')->set('mp:token'.$token , json_encode($data) , 3600);// 设置缓存
        if(!$result){
            return false;
        }
        return true;
	}
	//效验token
	public static function verifyToken($token){
        // $result = cache($token);
		$result = Cache::store('redis')->get('mp:token'.$token);
        if(!$result){
            return false;
        }
        return true;
	}










}
